import React, {Component} from 'react';
import pubSub from "pubsub-js";
import A from "./components/A";
import B from "./components/B";
/*
总结：
publish:发布者
    // 异步执行
    pubSub.publish("消息的名字","消息的内容");
    // 同步执行
    pubSub.publishSync("消息的名字","消息的内容");
subscribe:订阅者
    // 订阅多次
    pubSub.subscribe("消息的名字",("消息的名字","消息的内容")=>{})
    // 订阅一次
    pubSub.subscribeOnce("消息的名字",("消息的名字","消息的内容")=>{})
unsubscribe:取消订阅
    pubSub.unsubscribe("消息的名字");
*/

class App extends Component {
    render() {
        return (
            <div>
                <A/>
                <B/>
            </div>
        );
    }
    componentDidMount() {
        // 订阅者:第一个参数是消息的名字,第二个参数是一个回调函数,回调函数接收的参数即是消息的内容
        // pubSub.subscribe("one",(msgName,{a,b,c,d})=>{
        //     // console.log("当发布了消息为one的信息时，该回调函数会执行",msgName,a,b,c,d);
        //     console.log("App:",msgName,a,b,c,d);
        // })

        // 只执行一次
        pubSub.subscribeOnce("one",(msgName,{a,b,c,d})=>{
            // console.log("当发布了消息为one的信息时，该回调函数会执行",msgName,a,b,c,d);
            console.log("App:",msgName,a,b,c,d);
            pubSub.unsubscribe("one");// 取消名字为one的订阅者
        })
    }
}

export default App;